import { id } from "element-plus/es/locale";
import { defineStore } from "pinia";

//
interface IUserState {
  menus: IMenu[];
  username: string;
}

interface IMenuType {
  title: string;
  id: number;
  parentId: number;
  children?: IMenu[];
  icon?: string;
  name: string;
}

export const useUserStore = defineStore("user", {
  state: (): IUserState => ({
    menus: [],
    username: "",
  }),

  getters: {
    getMenusRouter(state) {
      const newMenus: { [k: number]: IMenuType } = {};
      state.menus.forEach((item) => {
        if (item.parentId == 0) {
          // 一级目录
          // newMenus[item.id] = item;
          //问题:商品下children只有一个对象。原因:因为先子再父。覆盖了原来添加的子元素
          newMenus[item.id] = {
            ...item,
            children: newMenus[item.id]?.children,
          };
        } else {
          // 二级目录
          // lnewMenus[item. parentId]得到父,从父里面增加children

          // 如果为空就赋{}  否则用自己的
          newMenus[item.parentId] ??= {} as IMenuType;
          newMenus[item.parentId].children ??= [];
          newMenus[item.parentId].children!.push(item);
        }
      });

      return newMenus;
    },

    // 获取所有的权限名称 返回一个数组
    getPermitions(state) {
      return state.menus.map((item) => item.name);
    },
  },
  actions: {
    updateMenus(menus: IMenu[]) {
      //目标:是为了左右两遍类型一致。
      this.menus = menus;
    },
  },
});
